package com.sprouting.personal.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sprouting.personal.dao.BillingGroupDao;
import com.sprouting.personal.model.entity.BillingGroup;
import com.sprouting.personal.model.vo.BillUsage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 账单组
 *
 * @author ：LX（长沙麓谷）
 * @date 创建时间： 2022/12/27 9:54
 */
@Service
@Slf4j
public class BillingGroupService extends ServiceImpl<BillingGroupDao, BillingGroup> {

    @Resource
    private BillingGroupDao billingGroupDao;


    /**
     * 根据名称查询账单组
     * @param id 主键，传则忽略
     * @param userId 当前用户ID
     * @param name 账单组名称
     * @return
     */
    public BillingGroup getBillingGroupByName(String id, String userId, String name) {
        return billingGroupDao.getBillingGroupByName(id, userId, name);
    }

    /**
     * 分页查询账单组
     * @param page 分页参数
     * @param name 查询参数，账单组名称,非必填
     * @param userId 当前用户ID
     * @return
     */
    public Page<BillingGroup> getBillingGroupPageList(Page page, String name, String userId) {
        return billingGroupDao.getBillingGroupPageList(page, name, userId);
    }

    /**
     * 根据主键批量查询账单组
     * @param groupIdList 主键
     * @return
     */
    public List<BillingGroup> getBillingGroupByIdList(List<String> groupIdList) {
        return billingGroupDao.getBillingGroupByIdList(groupIdList);
    }

    /**
     * 不分页查询全部的账单组
     * @return
     */
    public List<BillingGroup> getBillingGroupList(String userId) {
        return billingGroupDao.getBillingGroupList(userId);
    }

    /**
     * 获取账单组支出情况统计
     * @param billGroupId 账单组ID
     * @return
     */
    public BillUsage getGroupExpenditureInfo(String billGroupId) {
        return billingGroupDao.getGroupExpenditureInfo(billGroupId);
    }
}
